home *** CD-ROM | disk | FTP | other *** search
- /* Registry.cpp
- *
- * Registry handling class
- *
- * $Id: Registry.cpp 1.3 1997/01/14 17:42:08 pekangas Exp $
- *
- * Copyright 1996 Petteri Kangaslampi
- */
-
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
- #include "midasdll.h"
- #include "MidpNT.h"
- #include "registry.h"
-
-
- static void Error(char *msg)
- {
- Panic(msg);
- }
-
-
- Registry::Registry()
- {
- }
-
-
- Registry::~Registry()
- {
- }
-
-
- int Registry::KeyExists(const char *name)
- {
- LONG err;
-
- err = RegOpenKeyEx(HKEY_CURRENT_USER, name, 0, KEY_ALL_ACCESS, &key);
- if ( err != ERROR_SUCCESS )
- return 0;
- return 1;
- }
-
-
- void Registry::CreateKey(const char *name)
- {
- LONG err;
- DWORD createStatus;
-
- err = RegCreateKeyEx(HKEY_CURRENT_USER, name, 0, NULL,
- REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, &createStatus);
- if ( err != ERROR_SUCCESS )
- Error("Registry key creation failed");
- }
-
-
-
- void Registry::OpenKey(const char *name)
- {
- LONG err;
-
- err = RegOpenKeyEx(HKEY_CURRENT_USER, name, 0, KEY_ALL_ACCESS, &key);
- if ( err != ERROR_SUCCESS )
- Error("Registry key opening failed");
- }
-
-
- void Registry::Value(const char *name, void *data, DWORD *dataLength, DWORD
- bufferLength, DWORD *dataType)
- {
- LONG err;
- DWORD len;
- DWORD type;
-
- len = bufferLength;
- err = RegQueryValueEx(key, (LPSTR) name, 0, &type, (LPBYTE) data,
- &len);
- if ( err != ERROR_SUCCESS )
- {
- len = *dataLength;
- type = *dataType;
- err = RegSetValueEx(key, (LPSTR) name, 0, type,
- (CONST BYTE*) data, len);
- if ( err != ERROR_SUCCESS )
- Error("Registry value creation failed");
- }
-
- *dataLength = len;
- *dataType = type;
- }
-
-
- void Registry::ValueString(const char *name, const char *defaultData,
- char *dest, int bufferLength)
- {
- DWORD len;
- DWORD type = REG_SZ;
-
- if ( (unsigned) bufferLength < (strlen(defaultData) + 1) )
- Error("Registry::ValueString() - too long default");
-
- strcpy(dest, defaultData);
- len = strlen(dest) + 1;
-
- Value(name, (void*) dest, &len, bufferLength, &type);
-
- if ( type != REG_SZ )
- Error("Registry::ValueString() - illegal value type");
- }
-
-
-
- void Registry::WriteString(const char *name, const char *string)
- {
- DWORD err;
-
- err = RegSetValueEx(key, (LPSTR) name, 0, REG_SZ, (CONST BYTE*) string,
- strlen(string)+1);
- if ( err != ERROR_SUCCESS )
- Error("Registry::WriteString(): value creation failed");
- }
-
-
-
- DWORD Registry::ValueDWORD(const char *name, DWORD defaultData)
- {
- DWORD len, type, buf;
-
- buf = defaultData;
- len = sizeof(DWORD);
- type = REG_DWORD;
-
- Value(name, (void*) &buf, &len, sizeof(DWORD), &type);
-
- if ( type != REG_DWORD )
- Error("Registy::ValueDWORD() - illegal value type");
-
- return buf;
- }
-
-
-
- void Registry::WriteDWORD(const char *name, const DWORD data)
- {
- DWORD err;
- DWORD buf = data;
-
- err = RegSetValueEx(key, (LPSTR) name, 0, REG_DWORD, (CONST BYTE*) &buf,
- sizeof(DWORD));
- if ( err != ERROR_SUCCESS )
- Error("Registry::WriteDWORD(): value creation failed");
- }
-
-
-
- int Registry::ValueExists(const char *name)
- {
- LONG err;
-
- err = RegQueryValueEx(key, (LPSTR) name, 0, NULL, NULL, 0);
- if ( err != ERROR_SUCCESS )
- return 0;
- return 1;
- }
-
-
- /*
- * $Log: Registry.cpp $
- * Revision 1.3 1997/01/14 17:42:08 pekangas
- * Changed to use MIDAS DLL API
- *
- * Revision 1.2 1996/07/16 19:37:31 pekangas
- * Fixed to compile with Visual C, converted to LFs and added RCS keywords
- *
- */